23

» WarCraft 3 / Редактор ИИ и доп. рудник

Похожие вопросы:

ответ
PomaH:
Fraps:
Ну так в условия строительства - только лагерь 2(доп лагерь).
И можно ещё поставить при условии, что есть больше 1 ратуши (т.е. 2 лагерь 100% построен).
Мой бот единовременно владеет только 1 рудником. 2 ратуши это решение только для первого экспа, у меня на карте много рудников по небольшому количеству золота, комп должен возле каждого из них обустраивать оборону из вышек.
Только что проверил выставил строить у рудника №2 при условии что есть 2 ратуши, и он гад все равно стоит на главной базе,где рудник уже закончился.
Хм... То есть ты делал башни компу, поставил им место только во 2 лагере... Или у 2 рудника. И только при условии что у него есть 2 ратуши или заняты 2 рудника? Хм... Если он их строит, то он понимает что есть 2 рудника/ратуши, но не понимает где именно 2 рудник находится.

23

» WarCraft 3 / Изменение графики на SD

Похожие вопросы:

ответ
Он кладет это дело в память после preloader`а Можно код изменять напрямую в озу.

23

» WarCraft 3 / Отлавливать урон.

Похожие вопросы:

ответ
Кастовать способности даммиком и отлавливать урон от него.
ответ
всё как сказал Borodach
чтобы такой фигни не было надо запускать таймер на 0 секунд и им восстанавливать здоровье
также при получении урона надо давать скил на +100500 хп а таймером этот скил убирать и устанавливать нужное количество хп
подобных вопросов было дофига и готовых решений как следствие тоже дофига
я вроде тоже как то кидал свою систему обнуления урона
ответ
у меня тут дело в том что герои и так моментально ресаются, но отнимается жизни и они улетают на точку реса, а если сработает крест или реинкарнация юнит никуда не улетает а просто ждёт свой таймер и ресается...А что я собственно говоря туплю, у меня же смерти все триггерные как никак, просто в общем событии не отнимать жизнь если прокнул шанс, и не переносить на стартовую локу, а просто реснуть с задержкой. Спасибо за наводку парни 8gabriel8, pro100master, PT153, Absolute, KingMaximax, ssbbssc, , я понял, что мне нужно сделать
ответ
local DamageTrigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
	TriggerRegisterPlayerUnitEvent(DamageTrigger, Player(i), EVENT_PLAYER_UNIT_DAMAGING) -- до вычета брони
	TriggerRegisterPlayerUnitEvent(DamageTrigger, Player(i), EVENT_PLAYER_UNIT_DAMAGED) -- после вычета брони
end
TriggerAddAction(DamageTrigger, function()
	local damage     = GetEventDamage() -- число урона
	local damageType = BlzGetEventDamageType() -- тип урона
	local target     = GetTriggerUnit() -- тот кто получил урон
	local caster     = GetEventDamageSource() -- тот кто нанёс урон
end)

23

» WarCraft 3 / Щит молний.

Похожие вопросы:

ответ
Можно сделать на основе заклинания Жар Преисподней, но без триггеров тут не обойтись.
ответ
Нет, допустимые цели прописаны в движке игры, делаем триггерный щит молний, благо это очень примитивная способность.
ответ
Еще раз, 'Aams' - щит от магии, он дает маг имун и только. 'Aam2' - нейтрализует урон от магии, при этом в цель можно применять заклинания, обрати внимание там другой бафф.
ответ
Активация либо канал, либо любой скил без цели, и дамми каст щита молний на этого героя.
Может быть получится с руной щита молний, но не факт, надо проверять
ответ
Можно сделать способность, которая убирает пни в некотором радиусе. Вот пример.

23

» WarCraft 3 / черные квадраты

Похожие вопросы:

ответ
Кажется я понял в чем дело. В общем, в карте монолит в импорте файлик LoadingScreen.mdx весит 3 кб, когда я его экспортирую на рабочий стол, а затем импортирую обратно в карту с рабочего стола, то он почему-то начинает весить не 3, а 1 кб, а Лоадскрин не показывается при загрузке карты. Но из-за чего это происходит я не знаю.
ответ
Неполадки исправил удалив папку UI. Графон от плойки исправился внутри игры в настройках - они сбросились.
ответ
8gabriel8, Я полагал, что чёрные - юниты/объекты внутри, а красные - юниты/объекты вокруг, вот собственно его задача была расстановка юнитов/объектов вокруг, но ты прав, нужно больше информации.
ответ
Сделал моделаль, у меня работает. Посмотри может ты что-то сделал не так.
ответ
Думаю ваш друг имеет урезаный варкрафт который подгружает только стандартные а все что новые не отобразит или зеленым

23

» WarCraft 3 / нерабочий триггер

Похожие вопросы:

ответ
Поинт - позиция юнита
Группа - создать группу
Выбрать всех юнитов вокруг героя, добавить в Группу
Инт - количество юнитов в Группе
От 1 до Инт
Цикл:
-Установить Таргет = рандом юнит из группы
-Создать Дамми в Поинт
-Приказать последнему созданному замедление(Альянс) на Таргет
-Добавить таймер последнему созданному 0.50
-Убрать Таргет из Группы
-Установить Таргет = нет б.е.
Очистить Группу
Удалить Поинт
call DestroyGroup(udg_Group)
set udg_Group = null
set udg_Point = null
ответ
тема абилки с зарядами. что-то код с мем хаком плодят разный
я эту фишку тестил. там по факту, значение меняется. Но визуально нет (не отрисовывается).
ответ
8gabriel8,
Если что, скидывай карту.
Беда в том, что эта карта из кампании, там всё очень много весит, потому не буду.
PT153,
ну как там дела?
Пока никак, ибо из-за сессии отложил редактор в сторону (собственно, даже сюда времени зайти не было, к сожалению)
Рад, что ты предложил выход, но я, боюсь, твой код себе никак не перенесу, ибо, как писал в вопросе, лишь на GUI могу работать.
8gabriel8,
мне кажется, проблема не в этом триггере, а в другом, который запускает триггеры и таймеры.
Триггер, запускающий таймер, вряд ли многое испортить может
Мдаааа... Я свою ошибку таки нашёл. Она была в самом тупом месте из всех возможных.
Я действительно не понимаю, это у меня голова не работает совершенно, или в редакторе какие-то баги
Цитата из вопроса, у меня не работает голова.
Так вот, это я дурак полный.
Запихнул обнуление своей переменной ВНИМАНИЕ! в триггер, который игрокам-компьютерам каждые 2 секунды обновляет ресурсы. А вместе с этим и обнуляет снова и снова мою переменную. Обнаружил ли я это через дебаги? Нет, просто от скуки и безнадёжности положения начал прокручивать и листать все триггеры.
Спасибо всем, кто пытался помочь, это было очень приятно) Мне жаль, что вы ломали голову и тратили время впустую по моей глупости и невнимательности.
ответ
quq_CCCP:
Ну хоть сделал бы нормальное условие, это кривое + плодит утечки, лучше использовать event units in range или Unit enters in region.
А какие утечки он плодит?
Решил эту проблему таким способом:
А именно: Если на слоте игрока есть игрок, то проверяются наличие его юнитов в зоне ворот, если же на слоте нет игрока, то условие игнорируется.
ответ
Так тебе вджасс нужен)


Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные


23

» WarCraft 3 / Нужно определить угол

Похожие вопросы:

ответ
Проверка угла между углом поворота юнита facing angle и угла между координатами. У бриста довольно примитивно сделана пассивка, опен доту глянь.
ответ
Всё, разобрался, вопрос снимаю)
ответ
Примерно так получилось
function Trig_CW_Cast_Actions takes nothing returns nothing
    local unit u    = LoadUnitHandle( какая_нибудь_хештаблица, GetHandleId(GetExpiredTimer()), 0 )
    local real x1   = GetUnitX( u ) //координаты кастера
    local real y1   = GetUnitY( u )
    local real from = 800
    local real a    = GetUnitFacing( u ) //угол поворота юнита
    //local real S = 90 //Ширина угла
    //local real angle = S/2 //Половина ширины угла

    set udg_Angle = a
    set udg_Caster = u
    //set udg_X = angle

    call BJDebugMsg("Угол поворота при касте: "+ R2S(a))

    call GroupEnumUnitsInRange(bj_lastCreatedGroup,x1,y1,from, Condition(function TZZ))
    //call ForGroup( bj_lastCreatedGroup, function TZZ )
    call GroupClear(bj_lastCreatedGroup)
    
    set u = null
endfunction

function TimerOff takes nothing returns nothing
    local timer t  = GetExpiredTimer()
    local timer t2 = LoadTimerHandle( какая_нибудь_хештаблица, GetHandleId(t), 0 )
    
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t)  )
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t2) )
    call DestroyTimer( t  )
    call DestroyTimer( t2 )
    
    set t  = null
    set t2 = null
endfunction

function Timer takes nothing returns nothing
    local timer t  = CreateTimer()
    local timer t2 = CreateTimer()
    local unit  u  = GetTriggerUnit()
    
    call SaveUnitHandle( какая_нибудь_хештаблица, GetHandleId( t ), 0, u )
    call TimerStart( t, /*Периодичность*/0.04, true, Trig_CW_Cast_Actions )
    
    call SaveTimerHandle( какая_нибудь_хештаблица, GetHandleId(t2), 0, t )
    call TimerStart( t2, /*Время которое будет работать таймер*/36, false, TimerOff )
    
    set t  = null
    set t2 = null
    set u  = null
endfunction

//===========================================================================
function InitTrig_Cast takes nothing returns nothing
    set gg_trg_Cast = CreateTrigger(  )
    set bj_lastCreatedGroup = CreateGroup()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Cast, Condition( function Trig_CW_Cast_Conditions ) )
    call TriggerAddAction( gg_trg_Cast, function Timer )
endfunction
ответ
Неразрушаемые декорации очень геморройны, особенно отсутствие многих триггеров в разделе animation. Уж лучше браться за изменение через РО/макс. угол поворота или же макс. угол крена, а затем скрыть декорацию и показать только в нужное для игрока, время
ответ
Равно в варике округляет, а вот неравно - нет. У тебя и выводит 90.000, потому что R2S округляет до 3-го знака, а на самом деле там было что-то вроде 89.999999. 90 != 89.999999 в варике, потому условие прошло. Хочешь, чтобы не прошло, используй not (90 == angle). Тогда 89.999999 округлится до 90 и условие не пройдёт.

Либо используй то, что показал Скорп, тоже подойдёт.

23

» WarCraft 3 / Модель

Похожие вопросы:

ответ
Поиск по сайту, если не нашлось, сперва сюда:
Потом сюда:

В следующий раз за такие темы будут варны.
ответ
~8gabriel8:
Пересчитай границы, если не поможет, то приложи модель.
ответ
В 2 местах у разрушаемого объекта надо ставить модель импортированную.
ответ
Shakral, вот.

23

» WarCraft 3 / Анимация атаки.

Похожие вопросы:

ответ
Создаешь 2 модельки, у одной анимация стрельбы, у другой удара штыком. За тем создаешь 2 юнитов с разными модельками и при смене режима (на базе любого метамарфоза) меняешь юнита.
Все анимации атаки вписанные в юнита будут задействованы рандомно, даже если прикажешь триггером использовать конкретную анимку. Дабы избежать этого, нужно использовать лишь одну анимацию атаки.
ответ
8gabriel8:
Вроде ему наоборот надо Spell Throw -> Attack.
с Attack на Spell Throw

zetreisu, открываете модель в mdlvis жмакаете F3, выбераете нужную анимацию, переименовываете, жмакаете Enter и сохраняете модель при выходе.
ответ
XGM Bot:
Похожие вопросы:

ответ
тогда лучше всего удалить анимацию, наименее костыльный метод
ответ
8gabriel8:
Вроде ему наоборот надо Spell Throw -> Attack.
с Attack на Spell Throw

zetreisu, открываете модель в mdlvis жмакаете F3, выбераете нужную анимацию, переименовываете, жмакаете Enter и сохраняете модель при выходе.

ответ
SetUnitAnimationByIndex( whichUnit, index )
whichUnit - ваш юнит
index - необходимый индекс

23

» WarCraft 3 / Как работают триггеры?

Похожие вопросы:

ответ
prog помог в личке в Дискорде, вот решение
Решение
do
  local f = InitGlobals -- записываем InitGlobals в переменную
  function InitGlobals() -- заменяем оригинальную InitGlobals своей
       f() -- вызываем оригинальную InitGlobals из переменной
       InitMyTrigger()
  end

end

function InitMyTrigger()
   
 local SpellTrigger = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        local player = Player(i)
        TriggerRegisterPlayerUnitEvent(SpellTrigger, player, EVENT_PLAYER_UNIT_SPELL_CAST)
    end
    TriggerAddAction(SpellTrigger, function()
        local eventId          = GetHandleId(GetTriggerEventId())
        local caster           = GetTriggerUnit()
        local casterX, casterY = GetUnitX(caster), GetUnitY(caster)
        local spellId          = GetSpellAbilityId()
--        local spellX, spellY   = GetSpellTargetX(), GetSpellTargetY()
        if spellId == FourCC('A000') then -- Призыв
            print("призыв")
            local newu = CreateUnit(GetOwningPlayer(caster), FourCC('h000'), casterX, casterY, GetUnitFacing(caster))
        end
    end)
end
ответ
RobertStevenson, вейты вообще зло, а отсчёт можно сделать таймером. Точнее и без неожиданных багов.
Ждать пока - это вейт в цикле, работает это просто отвратно, сам с этим сталкивался. Лучше заменить на событие смерти колдуна.

Я всё же думаю, что дело не в вейтах. Выводи имя героя Hero[A]. Лучше выводить так: ("герой - ") + (Имя юнита (Hero[A])) + " " + (Число в строку (А)).
Если нет имени - героя просто нет в этой переменной.
ответ
Вставь этот русификатор, он и в джнгп работает норм
ответ
Уже дошел методом тыка, нужно было использовать triggering unit. Мда.

23

» WarCraft 3 / Триггерный урон от способности

Похожие вопросы:

ответ
юнит получает урон
1 ответ на 2 вопроса
ответ
Наименее ресурсозатратным для игрового процесса будет кастовать саму волну через отдельного дамми, который создаётся специально и только для волны силы. Сама волна наносит 1 ед урона. И потом определив, тип юнит-источника урона - наносим нужный урон от лица героя-хозяина юнита "волна силы".
В варианте "чекать группы каждые 0.0х сек" будет засоряться память и скорее всего будут подлагивания, в варианте со спец-дамиками засорится РО, выбирай из двух зол.
ответ
Astra, очень багано
так как после последней атаки может многое изменится
так же урон при событие юнит получает урон зависит от брони и прочих резистов
если юнит с уроном 100 нанёс удар по врагу с физ резистом 50% а потом получил бафф/предмет на +100 урона то скилом нанесёт 50 урона хотя должен был бы нанести 200
тут нужно юзать бд
при касте скила брать из бд начальный урон юнита, бонусы предметов и бонусы всех бафов
тема кстати уже много раз поднималась
и каждый раз все заканчивалось тем что афтар забивал на подобную систему либо писал "вы все нубы/тролли и не знаете/не хотите сказать как сделать это легко и просто"
ибо подобная система требует кучи кода и как минимум 30 прочтённых статей по jass
вот статья о бд
ответ
Yonsen, обычно юзают предметную способность "запас здоровья" до 999999к хп. Обычно на все случаи жизни, любимый метод. Даем ее в момент нанесения урона. Когда срабатывает событие "юнит получает", то в этот момент урон еще не произошел, нам как бы оповешают, что он будет через 0.00 сек. Получает пассивку и через 0.00 сек урон. Потом хилим. И удаляем способность. Все.
ответ
~8gabriel8:
Ещё можешь наносить вместо отравления иной бафф, а отравлять даммиком. По этому баффу сможешь различать урон от автоатаки и способности.

23

» WarCraft 3 / Инком от маны

Похожие вопросы:

ответ
Сохраняй и меняй через таймер с временем 0.00 сек.
ответ
А еще лучше можно жаровню илидана заюзать для сжигания маны и срабатывания событий, которые вызываются при включении и выключении этой горелки. Причем она еще и сама автоматически выключится, когда закончится мана.
ответ
  1. Есть функция проверки кол-ва ловкости героя, при этом можно посмотреть сколько ловкости от характеристик и сколько от предметов, исходя из кол-ва ловкости вручать предметные абилки на атаку.
  2. Самое простое - апгрейды, триггерно повышать уровень улучшения которое будет действовать на героя, увы это не идеальный вариант, но один из самых просты. Так же вручать способности предметов на регенерацию здоровья \ маны.
  3. Напрямую - никак, есть место только под 5 способностей. Делать свою систему прокачки способностей из спеллбука или какие либо еще способы, на подобии рпгшных карт.
ответ
TeX13, подмена абилок? удаляешь одну даешь другую
ответ
Макс мана - Мана

23

» IrInA Host Bot / Создание игры

Похожие вопросы:

ответ
Напишите !checkme в игре на канале
ответ
Странно, что эта подписка показывается вам. Где вы создаете игру?

Пересмотрев прошлый вопрос, я так понял вы создаете игру на iccup, yes? Если так, то вам надо купить ВИП подписку. (теперь повер ап и вип одно целое) Если же вы не желаете покупать подписку, вы можеет бесплатно хостить через сайт. (вход осуществляется через ирина коннектор, статья про неё, хоть и старая, но есть.)
ответ
Эту карту на ирине можно играть только на автохосте

23

» WarCraft 3 / Анимация у модели

Похожие вопросы:

ответ
Ответ из 2020 на lua
function PlayUnitAnimationFromChat()
    local this=CreateTrigger()
    TriggerRegisterPlayerChatEvent(this,Player(0),"",true)
    TriggerAddAction(this, function()
        local s=S2I(GetEventPlayerChatString())
        SetUnitAnimationByIndex(mainHero,s)
        --print(GetUnitName(mainHero).." "..s)
    end)
end
mainHero - глобалка юнит
Вводим в чат цифру и юнит воспроизводит анимацию
ответ
ledoed, были там анимации, в шапке проблема подробно описана.
это кароч оказалась мертвая тема искать проблему, тупо перенес мясо на рабочую модельку и заново запилил анимки.
Но если вдруг кто-то отпишется с решением проблемы после, то изменю лучший ответ
ответ
Навряд ли тебе будет кто-то что то объяснять, так что опишу на пальцах.

War3ModelEditor - лично использую только для просмотра моделей создания эффектов и правильного наложения текстур. Mdlvis - можно использовать для создания костей и анимации но только на версии 1.39 и то это будет очень не простое дело. По поводу соединения вершин в mdlvis вроде есть такая штучка.

Можно так же научиться владению софтом за границами Warcraft. 3dsmax или Maya в принципе хороший выбор можно начать с освоения эти двух прог и потом через плагин Neodex для 3dsmax перегонять в формат варика. Maya самый вроде как доступный и удобный софт для создания анимаций. Если не хочешь мучатся с этим софтом то с прогами чисто для варика будет сложнее склепать что-то достойное.

Анимированнию увы не научу, сложно вспомнить как я наверстал знания в этой области. Но точно помню что все началось с этой статьи, а там методом проб и ошибок я понял основные составляющие анимации. Дальше я начал по инету собирать кусочки информации как и что делать.

В принципе все, это не советы, а скорее наводка на то что тебе стоит искать или осваивать.
ведь это сложнейшая часть считается.
Для кого как! В специализированных прогах для этого есть куча иструментов которые автоматизируют многие процессы. Из за их отсутствия в Mdlvis создание анимации превращается в пытку которой нет конца. Вот например для меня самая невыносимая часть это текстурирование, вечно недоволен результатом своей роботы, но это только в том случаи если текстуру я не могу нарисовать сам.
ответ
XGM Bot:
Похожие вопросы:

ответ
прочитать правила импорта текстур, которые пишут рядом с моделью
чаще всего нужно удалить все строки в импорте, чтобы осталось TextureName.blp
ответ
~8gabriel8:
Определил причину невидимости модели после сохранения в war3me. В Geoset Animation Manager должна стоять Alpha 1, а он почему-то делает 0 или -1.

Поставил в Geoset Animation Manager не глобальные Color и Alpha, а для первых кадров всех 6 анимаций. Стало всё нормально и триггерные костыли не нужны.
Модель красного свечения ауры на юнитах:
Карта с этой аурой:
А отредактировать mdx в HEX-редакторе не сумел.
ответ
~8gabriel8:
Hate, вообще-то указал, что текстура за тобой, а ты вынудил меня напрягаться(
Хотя режим же сменил с Transparent на Blend, так что правильно всё
ответ
Bergi_Bear, видимо да.
GreatGorgile, это сбитые нормали, можешь вручную в мдлвизе их повернуть, но в максе это делается в один клик
ответ
Vann009:
Мне кажется, дело в том, что движок третьего варкрафта умеет работать только с низкополигональными моделями (впрочем, я могу ошибаться, но глюки с тенями у меня были только на "сложных" моделях с гладкими углами)
Переимпортировал модель, заменил редактор и всё работает.

ответ
Видимость же не отключена?

23

» WarCraft 3 / Триггерный скилл

Похожие вопросы:

ответ
Bender2000, код самой игры переписывать не надо
чтобы сделать триггерные скилы в обычном мили надо изменить несколько файлов в mpq архивах
триггеры на чистом jass пишутся в Blizzard.j а сами скилы делаются в слк
но для игры по сети у всех игроков должны быть твои mpq вместо стандартных
ответ
Ошибка в коде, jass работает везде. pro100master, пишет бред, ибо незнает что все карты для warcraft 3 имеют сценарий на Jass, т.к все ваши триггеры в итоге преобразуются в jass и хранятся в war3map.j, тоже самое и с АИ, которое для кампаний изначально написано на jass и прекрасно работает.
Смотрите где у вас ошибки, cjass\vjass интерпретаторы могут не верно работать с картами кампаний, пробуйте написать код на чистом jass без надстроек.
ответ
Окс, 5 мин

Вот что я хотел сделать на гуи, там какая-то фигня вообще происходила, что юнит скилл кидать не хотел (даже без ждать 0.10)

Давай попробуем на джасе))
Бтв, если ты знаешь джасс, то что это вообще за вопросы)
ответ
Здравствуй, посмотрел карту, на счет вейтов кстати не думаю хорошая идея ими пользоваться, но вызывать какую именно "щупальце" в принципе можно сделать так(проверкой на уровень способности) и все это будет одним триггером
тоже самое можно и с первыми 3 сократить в 1, простой проверкой на уровень способности
ответ
Чистая геометрия. Дано 2 точки, начало скачка и конец, расположены они на условном прямоугольнике на противоположных сторонах самых коротких краёв. Следовательно нужно нарисовать этот прямоугольник обычным rect (областью) между этими точками и дать урон в этой области. Не написан метод реализации:GUI, JASS, LUA кстати.

23

» WarCraft 3 / Количество глобальных переменных

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
даже наличие 2000 глобальный переменных особо не скажется на производительности, значение лишь имеет их обнуление и само использование в коде карты
ответ
- Я использую это:
struct linkedList
        private  static  constant  timer     period  =  CreateTimer( )
        private                    thistype  prev
        private                    thistype  next


        private stub method destroy takes nothing returns nothing

//          Здесь должен находится Ваш код.

            set  this.prev.next  =  this.next
            set  this.next.prev  =  this.prev

            if ( thistype( 0 ).next == 0 ) then
                call PauseTimer( thistype.period )
            endif

            call thistype.deallocate( this )
        endmethod


        private static method iterate takes nothing returns nothing
            local  thistype  this  =  thistype( 0 ).next

            loop
                exitwhen ( this == 0 )

//              Здесь должен находится Ваш код.

                call this.destroy( )

                set  this  =  this.next
            endloop
        endmethod


        private static method create takes nothing returns thistype
            local  thistype  this  =  thistype.allocate( )

            set  this.next         =  thistype( 0 )
            set  this.prev         =  thistype( 0 ).prev
            set  this.next.prev    =  this
            set  this.prev.next    =  this

//          Здесь должен находится Ваш код.
            
            if ( this.prev == 0 ) then
                call TimerStart( thistype.period, 0.03125, true, function thistype.iterate )
            endif

            return this
        endmethod


    endstruct
static method create takes nothing returns nothing
static method iterate takes nothing returns nothing
method destroy takes nothing returns nothing
Для работы этого двусвязного списка требуется создать 2-е переменные с именами next, prev.
ответ
ScopteRectuS, Переменные инициализируются при инициализации карты, она же вроде как глобальная udg_HeroGFL_owner. Или в коде карты насильно инициализировать?
Они же не локалки
ScopteRectuS, м, реально null возвращает боевая единицы. Смешно. Окей: И как ему определить созданную во время игры боевую единицу?
ответ
Есть играбельная карта с 200к глобалок...
Забей кароче на их число, лишь бы они работали правильно.

23

» WarCraft 3 / Проблемы с морфом

Похожие вопросы:

ответ
a.Kashtan:
VetsaN, Именно.
В редакторе способностей найди строчку с анимацией и попробуй прописать анимацию, отличную от морфа.
ответ
Artem48, быстро воскрешаете, бага варкравта.
ответ
Отлично, значит мы можем однозначно соотнести номер игрока с юнитом в массиве?
  • переключившихся в летающий режим героев добавляем в глобальную группу
  • запускаем таймер на малом периоде, что-то около 0.04, который перебирает всех в группе и выполняет смещение к взятой из массива точке со скоростью движения героя (тут можно экспериментировать с разными алгоритмами движения, главное что все данные мы можем легко получить из массива по номеру игрока которому принадлежит юнит)
  • отслеживаем все приказы для героев в состоянии полета и на основе этого запоминаем текущую точку куда юнит должен двигаться и прочие данные, записываем эти данные в массив
  • при отключении полета убираем героя из группы и перестаем отслеживать его приказы

А, т.е. в карте уже есть системы триггерного движения? Значит самое время унифицировать их в одну, чтобы одна и та же система управляла и полетом и физикой и другими видами триггерного движения.
ответ
Я так понимаю телепорт на цель, тогда всё просто GetSpellAbilityTarget().
ответ
Вариант без даммика:
Есть способность предмет "увеличение поля зрения" с иконкой телескопа (Alsi) добавляй его в здание, когда туда кто то заселяется и убирай когда здание пустует
(в способности можно указать радиус поля зрения)
Вариант с даммиком: вешай на здание способность Магический огонь (Afae)

23

» WarCraft 3 / Как сделать

Похожие вопросы:

ответ
в статьи
там есть пример создание своего ресурса
ответ
N7 Molot:
Все намного проще чем Вы думаете. В меню редактора "Сценарий => Дополнительно" есть такая галочка, называется "Скрытые области частично видимы", убери эту галочку и будет тебе магия)
p.s.: Если сразу не включится функция пересохрани карту и перезапусти варик.
ответ
Если охото сделать зарыды со счетчиком то тут 2 пути:
  1. Юзать стандартные абилки со счетчиком зарядов, а их только 2 совы охотницы и вспышки орудийного расчета гномов. Увы первая цель декор онли, вторая цель точка онли, на юнита никак, кстати хорошо подходит под кастом блинки, кастуется почти мгновенно, быстрее канала, без всяких рукомаханий.
  2. Использовать N способностей с разными иконками, на которых будет изображен счетчик, изменяя уровень способности или вовсе весть скилл через 'Eneg' (Техника, скилл механика, позволяет изменять поля скиллов) то можно создать скиллы со счетчиком, допустим пока есть заряды у скилла нету кулдауна, скилл последнего заряда имеет кулдаун.
Увы туча ипорта да и найти качественные иконки со счетчиком дело непростое.
ответ
Какой точный вопрос, однако.
Ответ: триггерно, либо в редакторе объектов, если нужно изменить характеристики, не создаваемые/изменяемые триггерно.
Попытаюсь сыграть в экстрасенса, подстрахуюсь логикой:
Если нужно, чтобы изменялась характеристика количественно, т.е, например, увеличивался наносимый урон, то в действии нанесения урона вместо точного значения нужно выставить функию (формулу, зависимость etc.) имеющую аргументом уровень способности.
Если нужно менять характеристику качественно, например, тип наносимого урона, то следует использовать условия, сравнивающие уровень способности с нужным значением и... далее есть несколько вариантов реализации, но наиболее подходящий - просто выполнять все последующие действия триггера внутри оператора, а затем создать несколько раз скопировать его для других условий. Хотя, с точки зрения программирования, это не очень хороший вариант.
ответ
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя

23

» WarCraft 3 / предметы и тип предмета

Похожие вопросы:

ответ
ракеты, сферы
ответ
В русском редакторе это поле предмета назвается "Характеристика - Название". Независимо от способности, предмет будет брать кулдаун из этого поля.
ответ
Вместо когтей под задачу лучше подходит аура с бонусным уроном, можно настроить как прямой бонус так и процент, плюс отображается в статусе.
Если система работает в рамках десятков юнитов, за оптимизацию не беспокойся. Если бы речь шла о сотнях юнитов с данным эффектом, но сомневаюсь.
ответ
Годы практики и исследований в области мапмейкинга и у тебя возможно получится сделать что-то в половину такое же интересное как Рпг Арена

23

» WarCraft 3 / Предмет через руну

Похожие вопросы:

ответ
~8gabriel8:
Вот статья, где описаны морфы с примерами: xgm.guru/p/wc3/powerups
Сделаешь по образцу свой морф через руну, потом предмет-пустышку, потом триггер, что юнит использует предмет, в условие тип предмета-пустышки, в действиях даёшь герою руну с морфом, а также добавляешь способность, которая возвращает обратно, можно способность-пустышку, которая при срабатывании даёт руну обратного морфа.

23

» WarCraft 3 / Не работает триггер

Похожие вопросы:

ответ
ScopteRectuS, Я решил проблему там баг, если указать регион как точку назначения портала, то с ним триггеры перестают работать. Я просто указал другой регион.
biridius, Ну это альфа версия, за 5 мин сделал, знаю об утечках.
ответ
Roy Mustang:
Попробуй - Finishesh Research. вместо Finishes an upgrade
ответ
Скорее всего условия не выполняются. Нужно выводить на экран сообщения и смотреть, какие вывелись.
ответ
Ты юзал грейд.
Я юзал морф, а не грейд. Грейд был в другой наработке, и там не было проблем с анимацией. В наработке с морфом нет никаких вейтов.
Всё остальное какая-то ерунда, какие переменные? Грейд делается и всё.
Отмена для меня преимущество такое себе
И тем не не менее, отменять грейд тебе нужно, потому преимущество вполне себе.
Я больше-то вот как раз вышеупомянутые баги имел в виду
Эффекты аур могут остаться на юните, с героями ещё хуже. Так-то всё написано тут, пункт 19.

23

» WarCraft 3 / Здравствуйте разрешите вопрос задать?

Похожие вопросы:

ответ
Melissa, а ты попробуй :)
Melissa, Я нашёл! Хар-ки: скрыть мини карту.
Боже....
Одна голова хорошо а 2-е это Огр маг :)
ответ
С. Умер юнит
У. Юнит = Герой
Д. Написать: Имя владельца убившего + убил Имя владельца умершего
Установить переменную Kill с индексом - номер игрока владельца убившего + 1
Если/Тогда/Иначе/Функция
У. Kill с индексом - номер игрока владельца убившего = 2
Д. Сделал двойное убийство!
Если/Тогда/Иначе/Функция
У. Kill с индексом - номер игрока владельца убившего = 3
Д. Сделал тройное убийство убийство!
Переменная должна обнуляться. Т.е. ты должен отслеживать время после убийства героя, к примеру если прошло 5 сек после убийства, то уже не будет двойное убийство, если прошло меньше 5 сек и ты убил ещё одного = двойное убийство.
ответ
Возможно, у вас заработает WFE, как минимум в описании к нему написано, что он может иногда работать на 1.28.
ответ
Ruti Ragnason:
Модель дублировать сюда:

23

» WarCraft 3 / Команды удаления переменных

Похожие вопросы:

ответ
koloff, только что проверил, если нет анимации death у эффекта, то он исчезает спустя несколько секунд после вызова функции DestroyEffect
ответ
Вот так, но я в шоке, только что не работало, а теперь работает, то-то я смотрю у меня в других наработках эта удалялка стоит и норм удаляет, а в этой нет, видимо глюк был.
ScopteRectuS, Вот как раз так не работает
ответ
У тебя утекает Позиция(умирающий юнит). Запиши предварительно в переменную. После завершения триггера пропиши call RemoveLocation(переменная точки)
Там где ты уничтожаешь группу надо не Destroy(группа), a DestroyGroup(группа)
Таймер истечения выведи до выбора юнитов в отряде. Но вцелом кроме точки ничего не утекает.